package com.itg.vms.service;

import com.itg.vms.entity.User;

import java.util.List;

/**
 * 用户业务逻辑层
 * @author itg
 */
public interface UserService {

    /**
     * 用户登录逻辑接口
     *
     * @param username
     * @param password
     * @return
     */
    User login(String username, String password);

    /**
     * 添加用户
     * @param user 要添加的用户实体
     * @return 是否添加成功
     */
    boolean addUser(User user);

    /**
     * 删除用户
     * @param user_id 要删除的用户id
     * @param updateBy 删除的操作者
     * @return
     */
    int deleteUserById(String user_id,String updateBy);

    /**
     * 分页查询所有用户
     * @param currentPage 当前页码
     * @param pageSize 页面显示的数据条数
     * @return 用户列表
     */
    List<User> selectAllUser(Integer currentPage, Integer pageSize);

    /**
     * 得到user的总记录数
     *
     * @return user表的总记录数
     */
    Long getAllUseSize();

    /**
     * 修改用户相关信息
     * @param user_name
     * @param nick_name
     * @param user_type
     * @param email
     * @param phonenumber
     * @param gender
     * @param status
     * @param username
     * @return
     */
    boolean UpdateUserById(String user_name, String nick_name, String user_type, String email, String phonenumber, String gender, String status, String username);

    /**
     * 登陆者修改自己个人资料
     * @param user
     * @return
     */
    boolean updateAdminAndUserInfo(User user);

    /**
     * 修改密码
     * @param new_password
     * @param username
     * @return
     */
   boolean updatePassword(String new_password,String username);

    /**
     * 根据用户名查询用户
     *
     * @param user_id
     * @param user_name
     * @param nick_name
     * @param phonenumber
     * @return
     */
    List<User> selectUserByName(String user_id, String user_name, String nick_name, String phonenumber);

    /**
     * 注册用户
     * @param user 用户实体
     * @return 是否注册成功
     */
   Integer registerUser(User user);

    /**
     * 获取编辑框中的数据
     * @param user_id
     * @return
     */
    User GeteditUserById(String user_id);

    /**
     * 更新用户状态
     * @param userId 要更新的用户id
     * @param status 要更新的状态
     * @return 影响的行数
     */
    int updateUserStatus(String userId,String status);
}
